
package com.sawgdev.android.bokuiki.common.database;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * ヘルパークラス（SQLiteOpenHelperを継承）
 */
public class BKDBHelper extends SQLiteOpenHelper {

    /** データベース名の定義 */
    private static final String DATABASE_NAME = "bkdb.db";

    /** データベースバージョンの定義 */
    private static final int DATABASE_VERSION = 8;

    /** 基本設定テーブル作成SQL文 */
    private static final String CREATE_CONFIG_TABLE = "create table config( "
            + "_id integer primary key autoincrement, "
            + "name TEXT NOT NULL, "
            + "name_kana TEXT NOT NULL, "
            + "birth TEXT NOT NULL, "
            + "sex INTEGER NOT NULL, "
            + "tel TEXT NOT NULL, "
            + "email TEXT NOT NULL, "
            + "etc TEXT, "
            + "address TEXT NOT NULL, "
            + "lat INTEGER NOT NULL, "
            + "lng INTEGER NOT NULL, "
            + "alert_notification INTEGER NOT NULL "
            + ")";

    /** 基本設定テーブル削除SQL文 */
    private static final String DROP_CONFIG_TABLE = "drop table if exists config";

    /** GPS軌跡テーブル作成SQL文 */
    private static final String CREATE_GPSHISTORY_TABLE = "create table gpshistory("
            + "_id integer primary key autoincrement, "
            + "latitude INTEGER NOT NULL, "
            + "longitude INTEGER NOT NULL, "
            + "altitude INTEGER NOT NULL, "
            + "location TEXT, "
            + "status INTEGER NOT NULL, "
            + "create_date TEXT NOT NULL "
            + ")";

    /** GPS軌跡テーブル削除SQL文 */
    private static final String DROP_GPSHISTORY_TABLE = "drop table if exists gpshistory";

    /** 自クラスのインスタンス */
    private static BKDBHelper instance;

    /**
     * コンストラクタ
     * @param context
     */
    private BKDBHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    /**
     * <pre>
     * BKDBHelperのインスタンスを取得します。
     * シングルトン実装です。
     * </pre>
     *
     * @param context Context
     * @return BKDBHelperのインスタンス
     */
    public static BKDBHelper getInstance(Context context) {
        if (instance == null) {
            instance = new BKDBHelper(context);
        }
        return instance;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_CONFIG_TABLE);
        db.execSQL(CREATE_GPSHISTORY_TABLE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL(DROP_CONFIG_TABLE);
        db.execSQL(DROP_GPSHISTORY_TABLE);
        onCreate(db);
    }
}
